package com.neusoft.clouduserfeign.feign;

import com.neusoft.clouduserfeign.dto.LoginRequest;
import com.neusoft.clouduserfeign.dto.Result;
import com.neusoft.clouduserfeign.dto.User;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户服务Feign客户端降级实现
 * 当服务不可用时提供降级响应
 */
@Component
public class UserServiceClientFallback implements UserServiceClient {
    
    @Override
    public Result<User> login(LoginRequest request) {
        System.err.println("Feign降级 - 登录请求被降级处理: " + request);
        return Result.error("用户服务暂时不可用，请稍后重试");
    }
    
    @Override
    public Result<Void> createUser(User user, String createBy) {
        return Result.error("用户服务暂时不可用，无法创建用户");
    }

    @Override
    public Result<Void> updateUser(String userId, User user, String updateBy) {
        return Result.error("用户服务暂时不可用，无法更新用户信息");
    }

    @Override
    public Result<User> getUserByUserId(String userId) {
        return Result.error("用户服务暂时不可用，无法获取用户信息");
    }

    @Override
    public Result<Void> deleteUser(String userId, String updateBy) {
        return Result.error("用户服务暂时不可用，无法删除用户");
    }

    @Override
    public Result<List<User>> getUserList(String userType, String status, String keyword) {
        // 返回空列表而不是null，避免前端错误
        return Result.success("用户服务暂时不可用，返回空列表", new ArrayList<>());
    }

    @Override
    public Result<Void> updateUserStatus(String userId, String status, String updateBy) {
        return Result.error("用户服务暂时不可用，无法更新用户状态");
    }

    @Override
    public Result<Void> changePassword(String userId, Object request, String updateBy) {
        return Result.error("用户服务暂时不可用，无法修改密码");
    }

    @Override
    public Result<Void> resetPassword(String userId, Object request, String updateBy) {
        return Result.error("用户服务暂时不可用，无法重置密码");
    }

    @Override
    public Result<Boolean> checkPermission(String userId, String operation) {
        // 降级时返回false，确保安全
        return Result.success("用户服务暂时不可用，权限检查失败", false);
    }
}
